Тема 3 «Алгоритмическое решение задач, анализ алгоритмической сложности. Основы программирования»

 

Слово «алгоритм» происходит от algorithmi – латинской формы написания имени великого среднеазиатского математика IX века Мухаммеда Аль-Хорезми, который сформулировал правила выполнения четырех арифметических действий. Многие годы математики использовали этот термин для описания правил решения математических задач.

Но не следует считать алгоритм чисто математическим понятием. По определению:

Алгоритм – это последовательность действий или инструкция выполнения какой-либо работы. Это система предписаний, адресованных пользователю, четко и однозначно задающих процесс  решения задач какого-либо типа.

Очень многие действия в течение всей жизни мы выполняем по алгоритмам: готовим по рецептам, по утрам умываемся, завариваем чай, включаем ПК и т. д.

Каждый алгоритм создается автором в результате решения какой-либо задачи и рассчитан на конкретного исполнителя.

Разработка алгоритма – сущность процесса решения задачи с помощью ЭВМ. Процесс составления алгоритмических предписаний называется алгоритмизацией. Чтобы решить любую задачу на ПК, надо выполнить действия в определенной последовательности.

Этапы решения задач на ЭВМ

1.     Постановка задачи (создание математической модели)

2.     Разработка алгоритма решения задачи

3.     Перевод алгоритма на выбранный язык программирования

4.     Ввод и отладка программы на ЭВМ

5.    Проверка правильности решения методом тестирования.

 

Чтобы алгоритм можно было бы использовать для решения компьютерных задач, он должен обладать некоторыми свойствами или, как говорят, отвечать определенным требованиям:

1.     Дискретность (Алгоритм должен быть разбит на отдельные шаги, представляющие собой четкие, законченные действия. Свойство состоять из отдельных шагов называется дискретностью)

2.     Определенность, однозначность (Каждый шаг алгоритма должен быть однозначно истолкован и при одних и тех же исходных данных приводить к одним и тем же результатам.)

3.     Массовость (Каждый алгоритм  должен предоставлять возможность решать не одну конкретную задачу, но целый класс однотипных задач)

4.     Результативность (Не каждый перечень последовательных действий приводит к результату. Алгоритмом  считается только тот перечень действий, который приводит к решению за разумный период времени.)

5.     Конечность (В алгоритме должен четко определяться последний шаг, который обозначает конец выполнения программы. Иначе алгоритм может получиться бесконечным и значит бессмысленным.)

6.     Понятность (Алгоритм должен быть понятен пользователю или исполнителю. Иначе его невозможно будет выполнить)

 

Существует несколько способов задания алгоритмов:

1.     На естественном языке (рус., каз., и т.д.)

2.     В виде схем (блок-схемы)

3.     На алгоритмическом языке

4.     На языке программирования.

 

Рассмотрим метод блок-схем, как самый наглядный, понятный и не требующий никаких компьютерных программ. В этом методе используют  условные обозначения:

Название процесса

Вид блок- схемы

Основные действия

Вычисление, присваивание

 

 

 

 

 

Вычисление математических выражений, присваивание значений

Выбор, условие

 

Выбор способа решения задачи, выполнение условия

Цикл

 

 

 

 

Начало цикла (повторения)

 

 

 

 

Документ

Вывод результата на принтер

Ввод, вывод

 

Ввод данных с клавиатуры, вывод результатов на экран

Начало, конец

 

Начало, конец алгоритма

Подпрограмма

 

Вход и выход в подпрограмму

Пояснение

 

 

 

 

Пояснение к схемам, формулам

 

Кроме этого, в алгоритмизации и программировании используют три основные структуры:

1.     Линейный алгоритм,

2.     Разветвляющийся алгоритм,

3.     Циклический алгоритм.

 

1.     Линейный алгоритм – это набор команд, выполняемых последовательно во времени друг за другом.

2.     Разветвляющийся алгоритм содержит условие, в результате которого происходит выбор одного из двух или нескольких условий.

3.     Циклический алгоритм предусматривает многократное повторение одних и тех же действий над новыми данными.

 

Чтобы понять работу алгоритмов различных видов, надо рассмотреть их работу на конкретных примерах.

Пример №1.

Дана длина ребра куба. Составить алгоритм нахождения площади грани, полной поверхности и объем куба.

Пример №2.  Составить алгоритм нахождения максимального числа из двух заданных

Пример №3.  Составить алгоритм нахождения площади 5-ти прямоугольных треугольников по заданным размерам катетов.